package com.ndp.fb.enums.publish;

import lombok.Getter;

/**
 * 广告发布批次的状态
 * 还有一个叫 PublishLevelStatus 的 enum ，这个里面的状态定义有歧义，会在后面的使用中修复掉。
 * Created by hunk.qin on 2016/1/14.
 */
@Getter
public enum PublishStatus {

    /**
     * 等待前置条件执行，前置条件状态从两位开始，10,11，后面加的条件，类似
     */
    WAIT_PRE_PROCESS("wait_pre_process",10),
    /**
     * 前置条件运行中
     */
    PRE_PROCESSING("pre_processing",11),

    /**
     *
     */
    PRE_FAIL("pre_fail",13),
    /**
     * 待发布状态
     */
    WAIT_PUPLISH("wait_publish", 0),
    /**
     * 发布中
     */
    PUBLISHING("publishing", 1),

    /**
     * 发布成功
     */
    SUCCEED("succeed", 2),

    /**
     * 发布失败
     */
    FAIL("fail",3),

    /**
     * 批次信息组装中
     *
     */
    ASSEMBLY("assembly",4),

    /**
     * 重试中
     */
    REDO("redo",5);

    /**
     *status
     */
    private String status;

    /**
     *code
     */
    private int code;

    /**
     * PublishStatus
     * @param status status
     * @param code code
     */
     PublishStatus(String status, int code){
        this.status = status;
        this.code = code;
    }

    /**
     * 根据code获取PublishStatus
     * @param code code
     * @return Status
     */
    public static PublishStatus getStatus(int code) {
        for (PublishStatus c : PublishStatus.values()) {
            if (c.code == code) {
                return c;
            }
        }
        return null;
    }

    /**
     * 根据status获取PublishStatus
     * @param status status
     * @return Status
     */
    public static PublishStatus getStatus(String status) {
        for (PublishStatus c : PublishStatus.values()) {
            if (c.status.equals(status)) {
                return c;
            }
        }
        return null;
    }
}
